//
// Created by liuhuan on 2021/5/23.
//

#ifndef CPP_OPE_COINS_H
#define CPP_OPE_COINS_H

#include "ValueRange.h"
#include "string"
#include "bitset"

using namespace std;

/**
 * 给 抽样函数 使用的伪随机序列
 * 伪随机序列 通过 openssl 的 hmac-256 算法生成
 */
class Coins {
private:
    string key;
    uint data;
    int counter;
    bitset<256> digest;
public:
    Coins(string key, uint data);
    bool next();
    double draw();
    bitset<256> hmac(const char *key, size_t keyLen, uint data);
};


#endif //CPP_OPE_COINS_H
